# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.AppEngine.V1.Model.Reasons do
  @moduledoc """
  Containers transition between and within states based on reasons sent from various systems. CCFE will provide the CLH with reasons for the current state per system.The current systems that CCFE supports are: Service Management (Inception) Data Governance (Wipeout) Abuse (Ares) Billing (Internal Cloud Billing API) Service Activation (Service Controller)

  ## Attributes

  *   `abuse` (*type:* `String.t`, *default:* `nil`) - 
  *   `billing` (*type:* `String.t`, *default:* `nil`) - 
  *   `dataGovernance` (*type:* `String.t`, *default:* `nil`) - 
  *   `serviceActivation` (*type:* `String.t`, *default:* `nil`) - Consumer Container denotes if the service is active within a project or not. This information could be used to clean up resources in case service in DISABLED_FULL i.e. Service is inactive > 30 days.
  *   `serviceManagement` (*type:* `String.t`, *default:* `nil`) - 
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :abuse => String.t() | nil,
          :billing => String.t() | nil,
          :dataGovernance => String.t() | nil,
          :serviceActivation => String.t() | nil,
          :serviceManagement => String.t() | nil
        }

  field(:abuse)
  field(:billing)
  field(:dataGovernance)
  field(:serviceActivation)
  field(:serviceManagement)
end

defimpl Poison.Decoder, for: GoogleApi.AppEngine.V1.Model.Reasons do
  def decode(value, options) do
    GoogleApi.AppEngine.V1.Model.Reasons.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.AppEngine.V1.Model.Reasons do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
